package com.pubinfo.passbook.common.entity;

import com.baomidou.mybatisplus.annotation.*;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;

/**
 * 菜单权限表
 *
 * @TableName t_system_menu
 */
@TableName(value = "t_system_menu")
@ApiModel(value = "TSystemMenu", description = "菜单权限表")
@Data
@NoArgsConstructor
public class TSystemMenu implements Serializable {
  /**
   * 菜单ID
   */
  @TableId(type = IdType.AUTO, value = "menu_id")
  @ApiModelProperty("菜单ID")
  private Integer menuId;
  
  /**
   * 菜单名称
   */
  @ApiModelProperty("菜单名称")
  private String menuName;
  
  /**
   * 父菜单ID
   */
  @ApiModelProperty("父菜单ID")
  private Long parentId;
  
  /**
   * 显示顺序
   */
  @ApiModelProperty("显示顺序")
  private Integer orderNum;
  
  /**
   * 请求地址
   */
  @ApiModelProperty("请求地址")
  private String url;
  
  /**
   * 打开方式（menuItem页签 menuBlank新窗口）
   */
  @ApiModelProperty("打开方式（menuItem页签 menuBlank新窗口）")
  private String target;
  
  /**
   * 菜单类型（M目录 C菜单 F按钮）
   */
  @ApiModelProperty("菜单类型（M目录 C菜单 F按钮）")
  private String menuType;
  
  /**
   * 菜单状态（0显示 1隐藏）
   */
  @ApiModelProperty("菜单状态（0显示 1隐藏）")
  private String visible;
  
  /**
   * 是否刷新（0刷新 1不刷新）
   */
  @ApiModelProperty("是否刷新（0刷新 1不刷新）")
  private String isRefresh;
  
  /**
   * 权限标识
   */
  @ApiModelProperty("权限标识")
  @NotBlank
  private String perms;
  
  /**
   * 菜单图标
   */
  @ApiModelProperty("菜单图标")
  private String icon;
  
  /**
   * 创建者
   */
  @ApiModelProperty("创建者")
  private String createBy;
  
  /**
   * 创建时间
   */
  @TableField(fill = FieldFill.INSERT)
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  @ApiModelProperty("创建时间")
  private Date createTime;
  
  /**
   * 更新者
   */
  @ApiModelProperty("更新者")
  private String updateBy;
  
  /**
   * 更新时间
   */
  @TableField(fill = FieldFill.INSERT_UPDATE)
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  @ApiModelProperty("更新时间")
  private Date updateTime;
  
  /**
   * 备注
   */
  @ApiModelProperty("备注")
  private String remark;
  
  @TableField(exist = false)
  private List<TSystemMenu> children;
  
  @TableField(exist = false)
  private static final long serialVersionUID = 1L;
}